package com.ljh.filter;

/**
 * @Author grung
 * @Date 2020/10/9 21:36
 * @Version 1.0
 */

public class MonitorData {
    int[] scale = new int[10000];//计算耗时
    int[] countContainer = new int[10000];//计算耗时频次
    long totalTimes=0L;//总请求次数
    static MonitorData getInstance(){
        MonitorData monitorData = new MonitorData();
        return monitorData;
    }

    public synchronized void addTimesNum(int ms){
        this.totalTimes++;
        this.scale[ms]=ms;
        this.countContainer[ms]++;
    }

    /**
     * @param f 最大请求比率
     * @result 耗时
     * //1、 获取最大请求比率位置： 总请求次数* f
     * //2、 根据最大请求比率位置，获取耗时
     */
    public int statTP(float f) {
        int round = Math.round(this.totalTimes*f);
        int result=0;
        int t=0;
        for (int i=0;i<countContainer.length;i++) {
            t+=countContainer[i];
            if(t>=round){
                result=  scale[i];
                break;
            }
        }
        return result;
    }

    public long getTotalTimes() {
        return totalTimes;
    }
}
